package com.thientan.export;

import java.util.Map;

/**
 * An interface for all kinds of requests in CWS application.
 * 
 */
public interface Request extends AdditionalPropertyMapSupport<Request> {

    /**
     * Returns the unique ID of this request.
     * 
     * @return
     */
    String getId();

    /**
     * Returns current additional properties from the requester. These properties are useful for all request handlers to
     * process it.
     * 
     * @return
     * @deprecated Since it reveals the internals of a request, this method is unsafe. Soon, this method returns a new
     *             map containing all additional properties. Thus, don't use this method to get current property map and
     *             then add to that map.
     */
    @Override
    Map<String, Object> getAdditionalProperties();

    /**
     * Returns name of the fired event which holds this request.
     * 
     * @return
     */
    String getOwnerEvent();
}
